home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Games Room
/
The Games Room.iso
/
system
/
c
/
fastexec.doc
< prev
next >
Wrap
Text File
|
1996-09-08
|
17KB
|
359 lines
26-Feb-1996
Documentation for
==========================
==== FastExec 39.16 ====
==========================
Copyright ⌐ 1994-1996 PitPlane Productions
IMPORTANT! Please read copyrights, disclaimer and
license parts of this document before use.
*** What is FastExec? ***
o FastExec is a reset proof patch to move Execbase and supervisor stack
from chipram into 32bit fastram on Blizzard 12x0 based A1200s, or
other turbo card based systems having the same problem. FastExec
requires Kickstart 3.0 or better.
*** Why FastExec? ***
o With Blizzard turbos (at least 1230-III) fast memory is added to
system memory pool after execbase is initialized. This leads to the
fact that execbase and system supervisor stack are stuffed into chip
memory! As you may have heard, chipram is slow compared against
fastram, in fact fastram can be more than ten times faster! It's a
pity that so vital parts of system get into chip memory, as there
usually is loads of lighting speed fastram available. FastExec is
program to fix this problem.
o There is another program called FastExec (author Torbj÷rn Andersson)
but it isn't as good as mine. It's over 4K long. It uses HACKS. It
doesn't survive resets. It's ShareWare. First version of my FastExec
was (internally) released at the end of year 1994, so it's an
independent product.
o Taken from the document of Andersson's FastExec:
"FastExec is not programmed in a recommended way, because I
don't know any clean way to solve the problem. FastExec may
not work on your system."
As a side effect Andersson's FastExec disturbs AutoConfig system.
Just try to examine expansion boards in your system after using it.
My machine claimed that there weren't any present!? I think there
isn't any good reason to move expansion.library because it causes
these severe troubles.
Well, I know the clean way to move execbase and I implemented it.
o This tool is FREEWARE!! (see license)
o FastExec is 100% assembler!
o FastExec executable is less than 1024 bytes short!
o Uses only 424 bytes of memory! (Yes, that's true!!)
o Doesn't conflict with bootmenu! (Andersson's FastExec does!)
o Can be used to fix similar troubles with other turbos too!
o I dunno about the speedup, as there aren't many multitasking
benchmark programs around. Should be worth of it, though.
o FastExec should be compatible with all future kickstarts.
o Enforcer hit free (tested)
*** Notes ***
o ATTENTION kickstart release 2 users!!
Would you like to see FastExec running on your system? If you would,
contact me (author) and ask. This could be _very_ easily implemented,
but I really didn't see any reason to support this anchient kickstart
release... ;-) The fact is that most of the powerful systems (that
need FastExec) run with kickstart 3.0 or better. (Except maybe some
upgraded A3000s?) Anyway, if you need FastExec for KS 2.x contact me.
o FastExec has been tested on following system:
A1200 10/540 MB, Blizzard 1230-III 68030 @ 50MHz
A1200T 10/820 MB, Blizzard 1260 68060 @ 50MHz
FastExec works (should work!) with all other turbo cards having
similar troubles. FastExec doesn't rely on Blizzard products, but
others aren't tested. If you're having troubles with FastExec on
your system and you're sure that trouble is hardware (or maybe even
software) related, contact me. I'll (try to) fix it. I cannot
guarantine FastExec to be 100% software/hardware compatible!
o Note that FastExec can *not* move execbase to fast memory which is
added with AddMem or similar tool in startup-sequence. Credit Card
(PCMCIA) memory cannot be used, but it's even slower than chipram
anyway!
o Some of virus killers and checkers may report that system's kickmem
and kicktag pointers are in use. That really is the case, but you
should calmly ignore these warnings. (Most virus killers/checkers
will show the name of the kicktag, in this case it is 'Fast_Exec'.)
o FastExec doesn't use Cold- or CoolCapture. This means it'll work fine
with, for example, ShapeShifter's PrepareEmul tool, in any
circumstances.
o FastExec should be compatible with all future Kickstarts. Kickstart
3.0 is currently the only tested one. If FastExec refuses to
co-operate with KS 3.1 or maybe with 4.0 beta(?) then contact me.
o To contact the author (for any reason?) try this:
Harry Sintonen (Delta) (Gifts, cli-scripts, ASM Sources
Kotipolku 30 etc. are welcome. No illegal trade.)
48710 Karhula
FINLAND
*** Technique ***
o If you're not interested how this program works you should skip this
part of the document. Maybe you should skip it anyway, because first
of all, this part is quite technical and secondly: I'm not very good
in explaining complicated things in english as this. (Forgive me!!
English isn't my native language after all. ;-)
o The very early rom startup hasn't changed much since Kickstart
release 1.2. All the internals, including hardware initialization,
execbase and internal variable building are almost identical in all
kickstart versions. Of course, in newer kickstarts things are done
much better than in earlier versions, and some structures has been
expanded, but the main idea is the same.
When the system has been initialized, temporary execbase has been
created. Then the system will search ROM memory for resident modules
and create ResModules list. If any KickTags are defined they'll
be inserted (or they'll replace existing modules) to ResModules list.
After this, all the resident modules will be initialized. This really
gets things running. The ResModules list will be initialized in
priority order, that is, expansion.library will be run (read:
initialized) first.
Expansion.library initialises all the expansions in system and for
example, memory of SupraRAM 500RX expansion for Amiga 500 will be
added to system's MemList. Apparently the memory of Blizzard 12x0
Turbo Board is NOT added in this phase. All memory above 16 megabyte
area (8MB autoconfig memory area) will be initialized afterwards. The
task is done by resident called 'diag init'. Its priority is 105
while exec.library's is 104.
Exec.library will be the next resident module to initialize. It tries
to allocate fast memory for execbase, but if it doesn't succeed it
will use the temporary execbase, which is always in chipram
(actually, it can be in pseudo fast memory). If it does get the
memory then the temporary execbase is cloned to new one and the
memory taken by temporary execbase is free'ed. As the memory of
Blizzard Turbo Board isn't available, the execbase and supervisor
stackpointer will be in chipram (The memory is added to system
afterwards in 'diag init' resident).
The trick is, that we'll allocate known fastram when the system is
running with that memory. Then we'll relocate execbase and supervisor
stack to this newly allocated memory array. The hard part is that
execbase can NOT be cloned when it is available in multitasking
enviroiment. Programs might have got execbase pointer from address 4
and use it happily, when we would free the memory used by that
execbase and use the new, totally different memory array as new
execbase. This would cause a total crash. The solution is to clone
execbase early enough, BUT after fastram is added to system memory
pool, which means use of kicktag pointer at priority 104. (Just after
'diag init' resident!)
Now our kicktag code is called after the fastram is available so we
can simply AllocMem() the execbase and stack area, clone execbase,
create new supervisor stack, set new execbase pointer to address 4,
set new supervisor stack pointer, free old execbase and stack memory,
and viola!, things are running fine.
The memory of kicktag code (code handling all the above) is
allocated with KickMemPtr service of execbase. As this memory is
allocated by execbase initialization, it must exists in MemList at
that time (this code is in chipram with A1200). Now, all the memory
has been allocated and the system is running from fastram.
This technique will work with future kickstarts. The reason is that
most of the execbase's structures aren't initialized at the moment
the cloning is done. Actually the only potential problem is that
system will crash if some program gets execbase pointer before
FastExec and uses it afterwards.
Now, that was a cutted version of _The Technique_!! [grin]
*** FastExec's Usage ***
o FastExec's template is
FORCE24BIT/S, RESET=REBOOT/S
FORCE24BIT/S With this switch you can force FastExec to
accept also fast memory below 24-bit
address range. Normally only fast memory
above 16MB (24-bit) is accepted. Usually
this switch isn't needed, I added it just
for compability reasons.
RESET=REBOOT/S If this switch is specified FastExec will
reboot the machine immeditially after
FastExec is installed to memory. BEWARE!!
You will lose all the information in ram!
Of course, no reboot is done if execbase is
already in fastram.
o RC (return code) is set:
OK (0) FastExec installed ok.
WARN (5) FastExec isn't needed. Exec is already in
fastram. This is also the result if
FastExec has already moved exec. Of course
RESET=REBOOT/S has no effect if execbase is
already moved!
ERROR (10) Things went wrong. Couldn't get memory?
This is the error you get if you do not
have 'real' fastram at all (see FORCE24BIT
switch).
FAIL (20) Something fatal happened! Dos didn't open?
o If you aren't aware of the fact whether you really need FastExec or
not (YES, you don't necessarily need this program! :) and you want to
install FastExec easily you should follow these instructions:
Write in CLI or Shell:
1.> FastExec
1.> Set
process 1
RC 5
Result2 0
1.>
If you got result as above (RC=5) you do not need FastExec as
execbase is already in fastram. If you got RC=10 then you do not have
enough memory (or you don't have 'real' 32-bit fastram [See
FORCE24BIT switch]).
process 1
RC 0
Result2 0
If you got Set's output as above (RC=0), you NEED FastExec. It will
now activate after next reboot, but if you want to make FastExec's
effect permanent, you need to copy FastExec executable into your C:
drawer (if not yet done) and insert the following line to the
beginning of your S:StartUp-Sequence file:
C:FastExec REBOOT
Now, after every coldreboot (total crash, powering up) your machine
will boot twice, but that isn't too disturbing, I think!
You can leave REBOOT switch out, the only difference is that execbase
will not be moved into fastram first time the system is powered up
(or rebooted after fatal crash), as the system will not be rebooted
by FastExec. This makes more sense if you have several similary
acting reset proof patches in your startup. Because of this feature
you can install, for example, following lines to your
startup-sequence:
C:FastExec ; FastExec will not reboot machine,
C:PrepareEmul ; but PrepareEmul will!
Now, your machine will be extra rebooted only once, instead of two
reboots. (I really hate triple reboots!! ;^)
Simple, ha?
And remember... Enjoy the FAST Exec!
*** COPYRIGHTS ***
All Amiga technology is Copyright ⌐ Amiga Technologies GmbH.
Blizzard Turbo Boards are ⌐ 1994 phase 5 digital products. All rights
reserved.
ShapeShifter is ⌐ 1993-1995 Christian Bauer. PrepareEmul is a part of
the ShapeShifter package.
SupraRAM is ⌐ 1991 Supra Corporation. SupraRAM 500RX is a trademark
of Supra Corporation.
FastExec is Copyright ⌐ 1994-1996 PitPlane Productions.
*** LICENSE ***
1. This license applies to the product called "FastExec", a program for
the Amiga computer, published by PitPlane Productions under the
concepts of FreeWare, and the accompanying documentation. The terms
"Program" and "FastExec" below, refer to this product. The licensee is
addressed as "you".
2. You may copy and distribute verbatim copies of the program's
executable code and documentation as you receive it, in any medium,
provided that you conspicuously and appropriately publish only the
original, unmodified program, with all copyright notices and
disclaimers of warranty intact and including all the accompanying
documentation, example files and anything else that came with the
original.
3. You may not copy and/or distribute this program without the
accompanying documentation and other additional files that came with
the original. You may not copy and/or distribute modified versions of
this program.
4. You may not copy, modify, sublicense, distribute or transfer the
program except as expressly provided under this license. Any attempt
otherwise to copy, modify, sublicense, distribute or transfer the
program is void, and will automatically terminate your rights to use
the program under this license. However, parties who have received
copies, or rights to use copies, from you under this license will not
have their licenses terminated so long as such parties remain in full
compliance.
5. By copying, distributing and/or using the program you indicate your
acceptance of this license to do so, and all its terms and conditions.
6. Each time you redistribute the program, the recipient automatically
receives a license from the original licensor to copy, distribute
and/or use the program subject to these terms and conditions. You may
not impose any further restrictions on the recipients' exercise of the
rights granted herein.
7. You may not disassemble, decompile, re-source or otherwise reverse
engineer the program.
8. If you wish to incorporate parts of the program into other programs,
write to the author to ask for permission.
9. You agree to cease distributing the program and data involved if
requested to do so by the author.
10. You may charge a fee to recover distribution costs. The fee for
diskette distribution may not be more than the cost to obtain a public
domain diskette from Fred Fish.
*** DISCLAIMER ***
NO GUARANTEE IS GIVEN NOR IMPLIED THAT THIS PROGRAM IS FIT FOR ANY
USE. THIS PROGRAM AND THE INFORMATION WITHIN THIS TEXT IS PROVIDED ON
"AS IS" BASIS. THE ENTIRE RISK AS TO ITS QUALITY AND PERFORMANCE IS
WITH THE USER. SHOULD THE PROGRAM PROVE DEFECTIVE, THE USER (AND NOT
THE AUTHOR) ASSUMES THE ENTIRE COST OF ALL NECCESSARY DAMAGES. IN NO
EVENT WILL THE AUTHOR BE LIABLE FOR DIRECT, INDIRECT, INCIDENTAL OR
CONSEQUENTIAL DAMAGES RESULTING FROM ANY DEFECT IN THE PROGRAM. THE
AUTHOR RESERVES THE RIGHT TO MAKE CHANGES TO THE SOFTWARE OR
DOCUMENTATION WITHOUT NOTICE.